package datos;

import java.util.Comparator;
import java.util.Iterator;
import java.util.SortedSet;
import java.util.TreeSet;
import logica.ComparaNick;

/**
 *
 * @author Cristian
 */
public class ListaUsuario
{


    private SortedSet <Usuario> listaUsuariosMiSet;

    private Comparator comparadorNick;

     public ListaUsuario()
    {
         comparadorNick = new ComparaNick();
         listaUsuariosMiSet = new TreeSet(comparadorNick);
    }

    public boolean agregarUsuario(Usuario objeto)
    {

        return listaUsuariosMiSet.add(objeto);
    }
//Obtener usuario por su posicion
     public Usuario obtenerUsuario(int posicion)
{
        Usuario registro = null;
        Object [] arreglo;
        int i;
        arreglo = listaUsuariosMiSet.toArray();

        if (posicion < listaUsuariosMiSet.size())
        {
            for(i=0; i<=posicion; i++)
            registro = (Usuario) arreglo[i];

            return registro;
        }

        return null;
    }


//busca un usuario por su cuenta de usuario
     public Usuario obtenerUsuario(Cuenta laCuenta)
    {
        boolean encontrado = false;
        Usuario auxiliar = null;
        Iterator iterador = listaUsuariosMiSet.iterator();
        while (!encontrado && iterador.hasNext())
        {
            auxiliar = (Usuario) iterador.next();
            if (auxiliar.getLaCuenta().getNick().equals(laCuenta.getNick()) && auxiliar.getLaCuenta().getClave().equals(laCuenta.getClave()))
                encontrado = true;
        }

        if (encontrado)
        {
            return auxiliar;
        }
        return null;
    }
    //busca un usuario usando el objeto completo



       public boolean removerUsuario(Usuario objeto)
    {
        return (listaUsuariosMiSet.remove(objeto));
    }
        Iterator iterador = listaUsuariosMiSet.iterator();
        while (!encontrado && iterador.hasNext())
        {
            auxiliar = (Usuario) iterador.next();
            if (auxiliar.getLaCuenta().getNick().equals(objeto.getLaCuenta().getNick()))
                encontrado = true;
        }

        for(i=0 ; i<arreglo.length ; i++)
        {
            registro = (Usuario) arreglo[i];
            System.out.println("Nombre: " + registro.getNombre());
            System.out.println("Apellido: " + registro.getApellido());
            System.out.println("Twitter: " + registro.getTwitter());
            System.out.println();
        }
        System.out.println("\n\n");
    }




       public boolean removerUsuario(Usuario objeto)
    {
        return (listaUsuariosMiSet.remove(objeto));
    }

           public int getTamListaUsuario()
    {
        return listaUsuariosMiSet.size();
    }

     public void imprimirColeccion()
    {
        int i;
        Usuario registro;
        Object [] arreglo;
        arreglo = listaUsuariosMiSet.toArray();
        System.out.println("DATOS");
        for(i=0 ; i<arreglo.length ; i++)
        {
            registro = (Usuario) arreglo[i];
            System.out.println("Nombre: " + registro.getNombre());
            System.out.println("Apellido: " + registro.getApellido());
            System.out.println("Twitter: " + registro.getTwitter());
            System.out.println();
        }
        System.out.println("\n\n");
    }



}
